package TP2.modelo;
import java.awt.Point;


public class AvionBombardero extends AvionConArmas {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1124600713410267382L;
	int cantidadDeMovimientos;	
	Avion enemigoPrincipal;
	MoverEnZigZagVertical moverEnZigZagVertical;
	public AvionBombardero(Point pos){
		this();
		this.setPosicion(pos);
	}
	
	public AvionBombardero(){
		
		//Inicializo el ancestro
		super();
		
		nivelDeVida = 100;
		radioDeColision = 25;
		cantidadDeMovimientos = 0;
		puntajePorDestruccion = 400;
		velocidad = 1;
		
		//incializo las armas
		LanzaTorpedosRastreadores lanzaTropedosRastreadores = new LanzaTorpedosRastreadores();		
		lanzaTropedosRastreadores.setCantidadDeMuniciones(3);
		
		LanzaCohetes lanzaCohetes = new LanzaCohetes();
		lanzaCohetes.setCantidadDeMuniciones(10);
		
		CanionLaser canionLaser = new CanionLaser();
		
		//Agrego las armas
		this.agregarArma(lanzaTropedosRastreadores);
		this.agregarArma(lanzaCohetes);
		this.agregarArma(canionLaser);
		
		//instancio el movimiento en zig zag
		moverEnZigZagVertical = new MoverEnZigZagVertical(radioDeColision);
		
	}
	
	//Se destruye el avion y deja un lanzaCohetes o un lanzaTorpedosRastradores
	public void destruir(){
		
		super.destruir();
		
		if(this.cantidadArmas() > 1){
			ItemArma item = new ItemArma();
			int indice;
			indice = (int)(Math.random()*1);
			switch (indice){
			case 0:
				LanzaCohetes arma = new LanzaCohetes();
				arma.setCantidadDeMuniciones(10);
				item.agregarArma(arma);
				break;
			
			case 1:	
				LanzaTorpedosRastreadores arma2 = new LanzaTorpedosRastreadores();
				arma2.setCantidadDeMuniciones(5);
				item.agregarArma(arma2);
				break;
			}
			item.setPosicion(this.getPosicion());
			Escenario escenario = Escenario.getInstancia();
 			escenario = Escenario.getInstancia();
 			escenario.agregarItemAlJuego(item);
		}
		
	}
	public void disparar(){
		
		Escenario escenario = Escenario.getInstancia();

		enemigoPrincipal = (escenario.getAvionDelJugador()).get(0);
		
		super.disparar();
	}
	
	public Avion getEnemigoPrincipal(){
		
		return enemigoPrincipal;
	}
			
	//Hace vivir al avion, se movera de arriba a abajo, disparando cada cuatro pasos
	public void vivir(){
		if(estaDestruido) return;
		Point posicionActual;
				
		posicionActual = this.getPosicion();
		
		
		//Incrementamos la cant de movimientos
		cantidadDeMovimientos++;
		
		//Muevo el avion
		posicionActual = moverEnZigZagVertical.mover(posicionActual, cantidadDeMovimientos);
		
		//Guardo la posicion
		this.setPosicion(posicionActual);
		
		//Cada cuatro pasos se produce el disparo
		//Si se realizo una cierta cantidad de movimientos, se dispara
		if(cantidadDeMovimientos % 90 == 0)
			this.disparar();
		
				
		
		
	}

	@Override
	public String getTipo() {
		return "AvionBombardero";
	}
	
	
}
